/*
 Problem Description
还记得中学时候学过的杨辉三角吗？具体的定义这里不再描述，你可以参考以下的图形：
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
Input
输入数据包含多个测试实例，每个测试实例的输入只包含一个正整数n（1<=n<=30），表示将要输出的杨辉三角的层数。
Output
对应于每一个输入，请输出相应层数的杨辉三角，每一层的整数之间用一个空格隔开，每一个杨辉三角后面加一个空行。
Sample Input
2 3
Sample Output
1
1 1

1
1 1
1 2 1

 */
package com.yuan.algorithms.training20150719;

import java.util.Scanner;

public class 杨辉三角 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			int n = sc.nextInt();
			int[][] map = new int[n][n];
			for (int i = 0; i < map.length; i++) {
				for (int j = 0; j <= i; j++) {
					if (j==0 || j==i) {
						map[i][j] = 1;
					} else {
						map[i][j] = map[i-1][j-1] + map[i-1][j];
					}
					if (j==0) {
						System.out.print(map[i][j]);
					} else {
						System.out.print(" "+map[i][j]);
					}
				}
				System.out.println();
			}
			System.out.println();
		}
	}

}
